package com.itheima.Zipatream;

import java.io.*;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class Demo02 {
    //解压缩流
    //压缩文件，文件夹
    public static void main(String[] args) throws IOException {

        //得到要压缩的文件夹
        File src = new File("E:\\cdj");
        //压缩包的去处
        File destParent = new File("E:\\");
        //创建压缩包路径
        File dest = new File(destParent, src.getName() + ".zip");
        //定义压缩流
        ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(dest));

        tozip(src,zos,src.getName());//


    }
    //定义一个方法，能有压缩文件再存入目的文件夹
    public static void tozip(File src,ZipOutputStream zos,String name) throws IOException {
        //遍历当前的src文件，获取其中的所有内容
        File[] files = src.listFiles();
        for (File file : files) {

            //判断当前file是文件还是文件夹
            if(file.isFile())//如果是文件，就需要创建zipentry对象，获取文件中的内容
            {
                ZipEntry entry = new ZipEntry(name+"\\"+file.getName());
                zos.putNextEntry(entry);
                //读取文件中的数据写入压缩包
                FileInputStream fis = new FileInputStream(file);
                int b;
                while ((b=fis.read())!=-1)
                {
                    zos.write(b);
                }
                fis.close();
                zos.closeEntry();

            }
            else//如果是文件夹就进行递归
            {
                tozip(file,zos,name+"\\"+file.getName());
            }
        }
    }

}
